home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple II Magazines (DO)
/
Softdisk Magazette Volume 2, No. 01 (1982-09)(Softdisk)(Side B).zip
/
Softdisk Magazette Volume 2, No. 01 (1982-09)(Softdisk)(Side B).do
/
DIVE.BOMBER.bas
< prev
next >
Wrap
BASIC Source File
|
1996-12-24
|
5KB
|
167 lines
1 HIMEM: 8192
5 DIM B(40,10)
6 DIM HX(9),HY(9)
10 HOME
15 GOSUB 6000
20 PRINT "LOADING SHAPE TABLE"
25 P = 16384
26 POKE 232,0: POKE 233,64
30 READ I$: IF I$ = "END" THEN 250
40 FOR A = 1 TO LEN(I$) -1 STEP 2
50 P$ = MID$ (I$,A,2)
60 H = ASC( LEFT$(P$,1))
70 L = ASC( RIGHT$(P$,1))
80 H = H -48: IF H >9 THEN H = H -7
90 L = L -48: IF L >9 THEN L = L -7
100 POKE P,H *16 +L
105 P = P +1
110 NEXT A
120 GOTO 30
125 DATA "030008001F003700"
130 DATA "252D2C2D2E35353F3F3F3F373535353525252525250500"
140 DATA "25253F3F24242C2D253C3E2627372E2D3536363F3F2E2E00"
150 DATA "1225253C3C37372E2E0500"
160 DATA "END"
250 S1 = 0:S2 = 0:M1 = 0:M2 = 0
255 PRINT "HIT ANY KEY TO BEGIN!"
256 P = PEEK( -16384): IF P <128 GOTO 256
257 POKE -16368,0
258 HOME
260 HGR
270 ROT= 0: SCALE= 1
275 HT = 0
280 FOR X = 1 TO 40
300 READ R: IF R = 0 THEN 405
310 HCOLOR= 1
320 FOR DX = (X -1) *6 TO (X -1) *6 +6
340 HPLOT DX,159 TO DX,159 -R *6
350 NEXT DX
355 FOR Y = 1 TO R:B(X,Y) = 5: NEXT Y
400 HCOLOR= 3
405 FOR Y = R +1 TO 10
410 DRAW 3 AT (X -1) *6 +3,159 -(Y -1) *6 -3
415 B(X,Y) = 1
500 NEXT Y
502 HT = HT +10 -R
505 NEXT X
520 DATA 9,8,7,5,4,3,2,0,0,1,2,3,4,3,3,4,5,6,5,4
530 DATA 4,5,6,5,4,3,3,4,3,2,1,0,0,2,3,4,5,7,8,9
1000 HOME
1003 VTAB 22: PRINT TAB( 33);: INVERSE : PRINT "DIVE";: NORMAL : PRINT ""
1004 VTAB 23: PRINT TAB( 32);: INVERSE : PRINT "BOMBER";: NORMAL : PRINT ""
1005 SW = 1
1010 IF SW = 1 THEN SW = -1:F = 230:T = 10: GOTO 1030
1020 SW = 1:F = 10:T = 230
1030 IF M1 = 5 AND SW = 1 THEN 1010
1040 IF M2 = 5 AND SW = -1 THEN 1010
1200 VTAB 22: IF SW = 1 THEN INVERSE
1210 PRINT "PLAYER #1";: NORMAL : PRINT TAB( 11);"SCORE:";S1; TAB( 21);"MISSES:";M1
1230 VTAB (23): IF SW = -1 THEN INVERSE
1240 PRINT "PLAYER #2";: NORMAL : PRINT TAB( 11);"SCORE:";S2; TAB( 21);"MISSES:";M2
1300 FOR CD = 5 TO 1 STEP -1
1310 VTAB (21): PRINT "COUNTDOWN:";CD
1315 POKE -16368,0
1320 FOR P = 1 TO 300: NEXT P
1330 NEXT CD
1340 VTAB (21): PRINT "
1527 FOR IN = F TO T STEP SW *3
1530 HCOLOR= 3: DRAW 1 AT IN -4,10
1535 DRAW 2 AT IN,25
1540 P = PEEK( -16384): IF P >128 THEN POKE -16368,0: GOTO 2000
1550 HCOLOR= 0
1560 DRAW 1 AT IN -4,10
1570 DRAW 2 AT IN,25
1600 NEXT IN
1700 GOTO 5000
2000 HCOLOR= 0: DRAW 1 AT IN -4,10
2002 DRAW 2 AT IN,25
2003 X = IN
2005 FOR Y = 25 TO 99 STEP 2
2010 HCOLOR= 0: DRAW 2 AT X,Y -2
2020 X = X +SW *1.75
2030 IF X < = 0 THEN X = 240: GOTO 2050
2040 IF X > = 240 THEN X = 0
2050 HCOLOR= 3: DRAW 2 AT X,Y
2060 NEXT Y
2070 HCOLOR= 0: DRAW 2 AT X,99
2080 FOR Y = 99 TO 158 STEP 2
3010 HCOLOR= 0: DRAW 2 AT X,Y -2
3020 IF B( INT(X/6) +1, INT((159 -Y)/6)) >0 THEN 4000
3030 X = X +SW *1.75
3040 HCOLOR= 3: DRAW 2 AT X,Y
3050 NEXT Y
3060 HCOLOR= 0: DRAW 2 AT X,157
3070 GOTO 5000
4000 RX = INT(X/6) +1:RY = INT((159 -Y)/6)
4006 IF B(RX,RY) = 5 THEN 5000
4010 FOR X = 1 TO 9:HX(X) = 0:HY(X) = 0: NEXT X
4015 HP = 1
4020 FOR Y = -1 TO 1: FOR X = -1 TO 1
4025 IF RX +X <1 OR RX +X >40 OR RY +Y <1 OR RY +Y >10 THEN 4100
4030 IF B(RX +X,RY +Y) < >1 THEN 4100
4040 HX(HP) = RX +X:HY(HP) = RY +Y
4050 B(RX +X,RY +Y) = 0
4060 IF SW = 1 THEN S1 = S1 +1: GOTO 4070
4065 S2 = S2 +1
4070 HP = HP +1
4100 NEXT X: NEXT Y
4110 HP = HP -1
4200 FOR FL = 1 TO 10
4210 HCOLOR= 3
4220 FOR FO = 1 TO HP
4230 DRAW 3 AT HX(FO) *6 -3,162 -HY(FO) *6
4240 NEXT FO
4250 HCOLOR= 0
4260 FOR FO = 1 TO HP
4270 DRAW 3 AT HX(FO) *6 -3,162 -HY(FO) *6
4280 NEXT FO
4290 NEXT FL
4500 FS = RX -1:TS = RX +1
4510 IF FS <1 THEN FS = 1
4520 IF TS >40 THEN TS = 40
4550 FOR S = FS TO TS
4560 FOR Y = 2 TO 10
4570 IF B(S,Y) < >1 THEN GOTO 4700
4580 FOR C = Y -1 TO 1 STEP -1
4590 IF B(S,C) < >0 THEN 4615
4600 NEXT C
4610 C = 0
4615 IF C +1 = Y THEN 4700
4620 B(S,C +1) = B(S,Y):B(S,Y) = 0
4630 HCOLOR= 0: DRAW 3 AT S *6 -3,162 -Y *6
4640 HCOLOR= 3: DRAW 3 AT S *6 -3,162 -(C +1) *6
4700 NEXT Y
4800 NEXT S
4810 IF (S1 +S2)/HT = INT((S1 +S2)/HT) THEN 5040
4900 GOTO 1010
5000 IF SW = 1 THEN M1 = M1 +1
5001 IF SW = -1 THEN M2 = M2 +1
5005 IF M1 +M2 <10 THEN 1010
5010 VTAB (21): PRINT "GAME OVER"
5015 :S1 = 0:S2 = 0:M1 = 0:M2 = 0
5020 P = PEEK( -16384): IF P <128 THEN 5020
5030 POKE -16368,0
5040 RESTORE
5050 READ I$: IF I$ = "END" THEN 270
5060 GOTO 5050
6000 PRINT "DIVE BOMBER -- WRITTEN BY RICHARD TODD"
6005 PRINT : PRINT "INSTRUCTIONS:"
6020 PRINT "YOU AND YOUR OPPONENT ARE BOTH PRIVATES"
6030 PRINT "IN THE U.S.ARMY. YOUR MISSIONS ARE THE";
6040 PRINT " SAME. TO CLEAR OUT A MOUNTAIN PASS TO "
6050 PRINT "ALLOW YOUR TROOPS TO GET THROUGH AND"
6060 PRINT "DEFEAT THE ENEMY. YOU ALTERNATELY DROP"
6070 PRINT "BOMBS IN AN ATTEMPT TO CLEAR OUT AS MANY";
6080 PRINT "ROCKS AS POSSIBLE. AS YOUR BOMB FLOATS"
6090 PRINT "ACROSS THE SCREEN, HIT ANY KEY TO DROP"
6100 PRINT "IT. YOU MAY HIT A KEY DURING THE COUNT-";
6110 PRINT "DOWN TO DEPLOY THE BOMB IMMEDIATELY."
6120 PRINT "EACH PLAYER GETS TO MISS 5 TIMES"
6130 PRINT "YOU MISS IF EITHER YOU FAIL TO DESTROY"
6140 PRINT "ANY ROCKS OR YOU DO NOT DROP YOUR BOMB"
6150 PRINT "AT ALL."
6160 PRINT "ANOTHER NOTE: THE BOMB 'WRAPS' AROUND"
6170 PRINT "THE SCREEN, TO ALLOW YOU TO HIT ROCKS"
6180 PRINT "THAT WOULD OTHERWISE BE IMPOSSIBLE TO"
6190 PRINT "HIT."
6200 RETURN